인터페이스 (컴퓨팅)
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
인터페이스(컴퓨팅)는 컴퓨터 시스템의 구성 요소 간, 또는 컴퓨터와 사용자 간의 상호 작용을 가능하게 하는 지점이나 방법을 의미한다. 하드웨어 인터페이스는 버스, 기억 장치, 입출력 장치 등과 같은 하드웨어 구성 요소 간의 연결을 정의하며, 병렬 통신과 직렬 통신 방식을 사용한다. 소프트웨어 인터페이스는 운영 체제, 응용 프로그램, 객체 간의 상호 작용을 정의하며, API, ABI, 프로세스 간 통신 등이 존재한다. 객체 지향 프로그래밍에서 인터페이스는 클래스의 추상화를 제공하며, 다형성을 통해 객체 간의 통합적인 사용을 가능하게 한다. 사용자 인터페이스(UI)는 사람과 컴퓨터 간의 상호 작용을 담당하며, 사용자-망 인터페이스(UNI)는 통신 사업자와 최종 사용자 간의 연결 지점을 의미한다.
하드웨어 인터페이스는 컴퓨터 내부 또는 외부의 물리적인 장치들을 연결하고 통신할 수 있도록 하는 규약이다. 여기에는 커넥터의 형태, 전기적 신호의 특성, 데이터 전송 방식 등이 포함된다. 하드웨어 인터페이스는 인터페이스의 기계적, 전기적, 논리적 신호와 이러한 신호의 순서를 지정하는 프로토콜(신호라고도 함)로 설명된다.[3]
2. 하드웨어 인터페이스
SCSI와 같은 표준 인터페이스는 입출력(I/O) 장치와 같은 컴퓨팅 하드웨어의 설계 및 도입을 컴퓨팅 시스템의 다른 구성 요소의 설계 및 도입과 분리하여 사용자와 제조업체가 컴퓨팅 시스템 구현에 큰 유연성을 제공한다.[3]
컴퓨터 등 정보기기 하드웨어 간의 통신을 위한 입출력 포트의 커넥터 형상이나 신호의 송수신 방법(프로토콜) 등을 정한 것이다. 주로 병렬 연결 방식과 직렬 연결 방식으로 나뉜다. PC에서는 병렬 연결 방식의 고속화가 한계에 다다름에 따라 각 인터페이스의 직렬 연결 방식으로의 전환이 진행되고 있다(버스 (컴퓨터) 참조).
2. 1. 종류
하드웨어 인터페이스는 다양한 버스, 기억 장치, 기타 입출력 장치와 같은 구성 요소들에 존재한다. 하드웨어 인터페이스는 인터페이스와 프로토콜에 존재하는 기계적, 전기적, 논리적 신호로 기술된다.[15]
하드웨어 인터페이스는 데이터를 동시에 여러 부분으로 전달하는 병렬 통신 방식과 데이터를 한 비트(bit)씩 전송하는 직렬 통신 방식으로 나눌 수 있다.[4]
2. 1. 1. 범용 인터페이스
직렬 | 병렬 |
---|---|
- 일반적으로 핫플러그 비대응으로 범용적인 것. 서버용으로 핫스왑 기능을 추가한 것도 있다.
병렬 | 직렬 |
---|---|
- 범용이지만 레거시 장치(구세대 인터페이스)로 자주 취급되는 것. PC 카드의 일부를 제외하고는 핫플러그에는 대응하지 않는다.
병렬 | 직렬 |
---|---|
- 범용이 아니고 용도가 제한되는 것
직렬 | 병렬 |
---|---|
2. 1. 2. 레거시 장치 (구세대 인터페이스)
- 병렬
- ** XT 버스
ISA
EISA
RS-232
EIA-422
- ** ADB
2. 1. 3. 특수 목적 인터페이스
3. 소프트웨어 인터페이스
소프트웨어 인터페이스는 서로 다른 소프트웨어 구성 요소들이 상호 작용하고 통신할 수 있도록 하는 규약이다. 소프트웨어 인터페이스는 기본적인 컴퓨터 시스템의 컴퓨터 자원(메모리, CPU, 저장 장치 등)에 대한 접근을 제공하며, 잘 정의된 진입점을 통해서만 접근을 허용하는 것이 설계의 핵심 원칙이다.[7] 이를 통해 소프트웨어의 모듈화, 재사용성, 유지보수성을 향상시킬 수 있다.
3. 1. 종류
소프트웨어 인터페이스는 다양한 수준과 유형을 가질 수 있다. 운영 체제는 하드웨어와 인터페이스 할 수 있으며, 이 운영 체제에서 실행되는 응용 소프트웨어나 프로그램은 스트림을 통해 상호작용할 수 있다. 객체 지향 프로그래밍의 경우 응용 프로그램 내의 오브젝트들은 메소드를 통해 상호작용한다.[5][6]소프트웨어 구성 요소 간의 인터페이스는 상수, 데이터 형식, 프로시저 유형, 예외 사양 및 메서드 시그니처를 제공할 수 있으며, 때로는 공용 변수도 인터페이스의 일부로 정의된다.[8]
소프트웨어 모듈의 인터페이스는 해당 모듈의 구현과는 별도로 의도적으로 정의된다. 다른 소프트웨어 모듈은 게시된 인터페이스를 통해서만 상호작용하도록 강제된다. 이러한 구성의 실용적인 장점은 구현을 동일한 인터페이스의 다른 구현으로 대체해도 다른 모듈이 실패하지 않아야 한다는 것이다.
소프트웨어 간 통신 시 정보 전달 방식 등을 정의한 것은 다음과 같다:
- API (Application Programming Interface)
- ABI (Application Binary Interface)
- 프로세스 간 통신
- 네트워크
객체 지향 프로그래밍에서 여러 종류의 객체를 다형성을 통해 통합적으로 사용하기 위해 경계 부분의 범용적인 공통 규격을 정의한 것이다. 어떤 인터페이스에 따른 메시지를 송수신하거나, 조작을 할 수 있도록 하는 것을 그 인터페이스를 구현한다고 한다.
자바, C#과 같은 프로그래밍 언어는 구현을 갖지 않는 추상 클래스로서 인터페이스를 지원한다. 이러한 언어에서 클래스는 구현의 다중 상속을 지원하지 않는 대신, 임의의 수의 인터페이스를 구현할 수 있다.
3. 2. 객체 지향 프로그래밍에서의 인터페이스
객체 지향 프로그래밍에서 "인터페이스"는 클래스의 추상화 역할을 하는 추상 자료형을 정의하는 데 사용된다. 인터페이스는 데이터를 포함하지 않지만, 메서드 시그니처 형태의 동작을 정의한다. 해당 인터페이스에 대응하는 모든 메서드에 대한 코드와 데이터를 가지고 있으며 그렇게 선언된 클래스는 그 인터페이스를 "구현"한다고 한다.[9] 단일 상속 언어에서도 여러 인터페이스를 구현할 수 있으므로, 동시에 여러 유형이 될 수 있다.[10]따라서 인터페이스는 자료형 정의이다. 객체를 교환할 수 있는 모든 곳(예: 함수 또는 메서드 호출)에서 교환할 객체의 "유형"은 특정 클래스를 지정하는 대신 구현된 인터페이스 또는 기본 클래스 중 하나로 정의할 수 있다. 이러한 접근 방식을 통해 해당 인터페이스를 구현하는 모든 클래스를 사용할 수 있다. 예를 들어, 최종 구현이 가능해지기 전에 개발을 진행할 수 있도록 더미 구현을 사용할 수 있다. 또 다른 경우에는 테스트 중에 가짜 또는 모의 구현을 대체할 수 있다. 이러한 스텁 구현은 개발 프로세스 후반에 실제 코드로 대체된다.
일반적으로 인터페이스에 정의된 메서드는 코드를 포함하지 않으므로 자체적으로 호출할 수 없다. 호출될 때 실행되려면 비추상 코드로 구현되어야 한다. "스택"이라는 인터페이스는 `push()` 및 `pop()`의 두 가지 메서드를 정의할 수 있다. 예를 들어, `FastStack` 및 `GenericStack`과 같이 여러 가지 방법으로 구현할 수 있는데, 첫 번째는 고정 크기의 자료 구조를 사용하는 빠른 방법이고, 두 번째는 크기를 조정할 수 있는 자료 구조를 사용하지만 속도가 다소 느린 방법이다.
인터페이스에는 많은 메서드가 포함될 수 있지만, 하나 또는 전혀 포함되지 않을 수도 있다. 예를 들어, 자바 언어는 단일 `read()` 메서드를 가진 `Readable` 인터페이스를 정의한다. `BufferedReader`, `FileReader`, `InputStreamReader`, `PipedReader` 및 `StringReader`를 포함하여 다양한 구현이 여러 목적으로 사용된다. 마커 인터페이스는 `Serializable`과 같이 메서드를 전혀 포함하지 않으며, 리플렉션을 사용하여 제네릭 처리에 런타임 정보를 제공하는 역할을 한다.[11]
인터페이스를 사용하면 ''인터페이스 기반 프로그래밍''이라는 프로그래밍 스타일을 사용할 수 있다. 이 방식의 기본 아이디어는 사용되는 객체의 내부 구현 세부 사항이 아니라 인터페이스를 기반으로 프로그래밍 논리를 구축하는 것이다. 인터페이스 기반 프로그래밍은 구현 특징에 대한 의존성을 줄이고 코드의 재사용성을 높인다.[12]
이 아이디어를 극단적으로 밀고 나가면, 제어 역전은 코드에 작업을 수행하는 데 사용될 인터페이스의 특정 구현을 주입할 ''컨텍스트''를 남겨둔다.
자바나 C#과 같은 프로그래밍 언어는 구현을 갖지 않는 추상 클래스로서 인터페이스를 지원한다. 이러한 언어에서 클래스는 구현의 다중 상속을 지원하지 않는 대신, 임의의 수의 인터페이스를 구현할 수 있다.
4. 사용자 인터페이스 (UI)
'''사용자 인터페이스'''(User Interface, UI)는 컴퓨터와 사람 간의 상호작용을 위한 접점이다. 사용자 인터페이스는 사용자가 컴퓨터 시스템을 편리하고 효율적으로 사용할 수 있도록 디자인되어야 한다.
4. 1. 종류
사용자와 컴퓨터 시스템 간에 데이터를 주고받는 여러 모달리티의 인간-컴퓨터 상호 작용(예: 그래픽, 사운드, 위치, 움직임 등)을 포함한다.5. 사용자-망 인터페이스 (UNI)
사용자-망 인터페이스(UNI)는 통신사업자의 통신 설비와 최종 사용자 측의 설비를 연결하는 지점이다. UNI는 광회선 종단 장치나 터미널 어댑터에 해당한다.[1]
망-망 인터페이스(NNI)는 네트워크끼리 연결하는 것을 말한다.[1]
참조
[1]
서적
Interface
https://books.google[...]
MIT Press
[2]
백과사전
IEEE 100 - The Authoritative Dictionary Of IEEE Standards Terms
IEEE Press
[3]
서적
Computer Architecture-Concepts and Evolution
Addison-Wesley
[3]
서적
Computer Organization and Design - The Hardware/Software Interface, Third Edition
https://archive.org/[...]
Morgan Kaufmann
[4]
서적
IBM PC And Clones: Hardware, Troubleshooting And Maintenance
Tata McGraw-Hill Publishing Co. Ltd
2018-06-15
[5]
서적
Mastering Cloud Computing
https://books.google[...]
Tata McGraw-Hill Education
[6]
서적
Object-Oriented Programming and Java
https://archive.org/[...]
Springer-Verlag
[7]
웹사이트
Leading-Edge Java: Design Principles from Design Patterns: Program to an interface, not an implementation - A Conversation with Erich Gamma, Part III
http://www.artima.co[...]
artima developer
2005-06-06
[8]
서적
Computer Organization and Design: The Hardware/Software Interface
Elsevier
2004-08-07
[9]
웹사이트
What Is an Interface
http://docs.oracle.c[...]
Oracle
2012-05-01
[10]
웹사이트
Interfaces
http://docs.oracle.c[...]
Oracle
2012-05-01
[11]
웹사이트
Performance improvement techniques in Serialization
http://www.preciseja[...]
Precise Java
2011-08-04
[12]
서적
Design Patterns: Elements of Reusable Object-Oriented Software
https://archive.org/[...]
Addison Wesley
[13]
웹사이트
インターフェースとは
https://kotobank.jp/[...]
2021-06-12
[14]
백과사전
IEEE 100 - The Authoritative Dictionary Of IEEE Standards Terms
IEEE Press
[15]
서적
Computer Architecture-Concepts and Evolution
Addison-Wesley
[15]
서적
Computer Organization and Design - The Hardware/Software Interface, Third Edition
Morgan Kaufmann
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com